// Ext.QuickTips.init();
var mytree;
var selectedNode;


		
var propertiesToolbar = new Ext.Toolbar([{
			text : '添加子菜单',
			icon : 'icons/toolBar/add.gif',
			handler : addChildMenu
		}, {
			text : '修改菜单',
			icon : 'icons/toolBar/plugin.gif',
			handler : modifyMenu
		}, {
			text : '删除菜单',
			icon : 'icons/toolBar/delete.gif',
			handler : delCheckedMenu
		}, {
			text : '刷新',
			icon : '/extjs3/resources/images/default/grid/refresh.gif',
			handler : function() {
				mytree.getRootNode().reload();
			}
		}, {
			text : '新增根菜单',
			icon : 'icons/toolBar/add.gif',
			handler : addMenu
		}]);

function clickTreeNode(n) {
	selectedNode = n;
}

function showAddMenuForm() {
	menuForm.getForm().reset();
	menuForm.isAdd = true;
	menuFormWin.setTitle('添加菜单');
	menuFormWin.show();
}

function addMenu() {
	// 添加根菜单.
	Ext.MessageBox.confirm('提示', '您要添加根菜单吗?', function(btnId) {
		if (btnId == 'yes') {
			showAddMenuForm();
		}
	});//
}

function addChildMenu() {
	if (!selectedNode) {
		Ext.Msg.alert('提示', '请选择父项菜单!')
	} else {
		Ext.MessageBox.confirm('提示', '您要为 ' + selectedNode.attributes.name
						+ ' 添加子菜单吗?', function(btnId) {
					if (btnId == 'yes') {
						showAddMenuForm();
						menuForm.getForm().setValues({
							'parentCode' : selectedNode.attributes.code,
							'parentId' : selectedNode.attributes.id,
							'canBeDelete' : selectedNode.attributes.canBeDelete == ''?'0':selectedNode.attributes.canBeDelete
						});
						if(selectedNode.attributes.canBeDelete != '1'){
							Ext.getCmp('radioTrue').getEl().dom.disabled = true;
							Ext.getCmp('radioFalse').getEl().dom.disabled = true;
						}
					}
				});//
	}
}

function modifyMenu() {
	if (selectedNode) {
		menuForm.getForm().reset();
		loadMenuForm(selectedNode.attributes.id);
		menuForm.isAdd = false;
		
		menuFormWin.setTitle('修改菜单信息');
		menuFormWin.show();
		
		/*我无法判断其父项是不是可被删除，无法确定是否禁用不能被删除的radio.
		 * if(selectedNode.attributes.canBeDelete != '1'){
			Ext.getCmp('radioTrue').getEl().dom.disabled = true;
			Ext.getCmp('radioFalse').getEl().dom.disabled = true;
		}*/
	} else {
		Ext.Msg.alert('提示', '请选择要修改的项目!')
	}
}

function loadMenuForm(menuId) {
	menuForm.getForm().load({
				waitMsg : '正在加载数据',
				waitTitle : '提示',
				url : 'menu.action',
				params : {
					method : 'loadById',
					id : menuId
				},
				method : 'GET',
				success : function(form, action) {
					// 数据加载成功.
				},
				failure : function(form, action) {
					Ext.Msg.alert('无法加载该数据');
				}
			});
}

function delCheckedMenu() {
	// 得到当前选中的项目.
	var r = [];
	var ids = [];
	r = mytree.getChecked();

	if (r.length <= 0) {
		Ext.Msg.alert('提示', '请勾选要删除的项目!');
		return;
	}

	for (var i = 0; i < r.length; i++) {
		var n = r[i];
		ids.push(n.id);
	}
	var msgTip = Ext.MessageBox.show({
           msg: '正在删除所选项目, 稍后...',
           progressText: '删除...',
           width:300,
           wait:true,
           waitConfig: {interval:200}
       });

	Ext.Ajax.request({
				url : 'menu.action?method=delete',
				params : {
					idarray : ids
				},
				method : 'POST',
				success : function(response, options) {
					msgTip.hide();
					var result = Ext.util.JSON.decode(response.responseText);
					mytree.getRootNode().reload();
					selectedNode=null;
					initMenu();
					if (result.success) {
						Ext.Msg.alert('提示', '成功删除项目');
					}else if(result.failure){
						Ext.Msg.alert('提示', result.message);
					}
				},
				failure : function(response, options) {
					msgTip.hide();
					initMenu();
					Ext.Msg.alert('提示', '删除失败.');
				}
			});
}

function submitMenuForm() {
	Ext.getCmp('radioTrue').getEl().dom.disabled = false;
	Ext.getCmp('radioFalse').getEl().dom.disabled = false;
	if (menuForm.isAdd) {
		// 添加操作.
		menuForm.form.submit({
					clientValidation : true,
					waitMsg : '正在保存信息',
					waitTitle : '提示',
					url : 'menu.action?method=add',
					method : 'POST',
					success : function(form, action) {
						menuFormWin.hide();
						// 更新property列表.
						mytree.getRootNode().reload();
						Ext.Msg.alert('提示', '添加成功');
						initMenu();
						selectedNode=null;
					},
					failure : function(form, action) {
						Ext.Msg.alert('提示', '添加失败');
					}
				});
	} else {
		// 修改.
		menuForm.form.submit({
					clientValidation : true,
					waitMsg : '正在修改信息',
					waitTitle : '提示',
					url : 'menu.action?method=modify',
					method : 'POST',
					success : function(form, action) {
						menuFormWin.hide();
						// 更新property列表.
						mytree.getRootNode().reload();
						Ext.Msg.alert('提示', '修改成功');
						initMenu();
						selectedNode=null;
					},
					failure : function(form, action) {
						Ext.Msg.alert('提示', '修改失败');
					}
				});
	}
}

					

var menuForm = new Ext.FormPanel({
			border : false,
			columnWidth : 0.4,
			labelSeparator : ':',
			frame : true,
			items : [{
						xtype : 'textfield',
						width : 200,
						allowBlank : false,
						blankText : '名称不能为空',
						name : 'name',
						fieldLabel : '名称'
					}, {
						xtype : 'textfield',
						width : 200,
						name : 'level',
						fieldLabel : '层次'
					}, {
						xtype : 'textfield',
						width : 200,
						name : 'icon',
						fieldLabel : '图标'
					}, {
						xtype : 'textfield',
						width : 200,
						name : 'image',
						fieldLabel : '图片'
					}, {
						xtype : 'textfield',
						width : 200,
						name : 'link',
						fieldLabel : '链接'
					}, {
						xtype : 'textfield',
						width : 200,
						name : 'linkTow',
						fieldLabel : '附件链接'
					}, {
						xtype : 'textfield',
						width : 200,
						name : 'status',
						fieldLabel : '状态'
					}, {
						xtype : 'radiogroup',
						//layout : 'table',
						fieldLabel : '是否能够删除',
						//defaultType : 'radio',
						//isFormField : true,
						items : [
							{
								id : 'radioTrue',
								name : 'canBeDelete',
								boxLabel : '是',
								inputValue : '0',
								checked : true
							},{
								id : 'radioFalse',
								name : 'canBeDelete',
								boxLabel : '否',
								inputValue : '1'
								/*,
								listeners:{'check':function(radio,isChecked){
									if(selectedNode){
										if(isChecked && selectedNode.attributes.canBeDelete != '1'){
											//alert('父菜单为可删除，子不能为不可删除。');
										}
									}
								}}*/
							}
						]
					},{
						xtype : 'textfield',
						width : 200,
						name : 'order',
						fieldLabel : '排序'
					}, {
						xtype : 'textfield',
						width : 200,
						name : 'remark',
						fieldLabel : '备注'
					},{
						xtype : 'hidden',
						name : 'code'
					},{
						xtype : 'hidden',
						name : 'parentId'
					}, {
						xtype : 'hidden',
						name : 'parentCode'
					}, {
						xtype : 'hidden',
						name : 'id'
					}],
			buttons : [{
						text : '提交',
						handler : submitMenuForm
					}, {
						text : '关闭',
						handler : function() {
							menuFormWin.hide();
						}
					}]
		});

		
var menuFormWin = new Ext.Window({
			layout : 'fit',
			width : 380,
			height : 400,
			closeAction : 'hide',
			resizable : false,// true可以拖动大小.
			shadow : true,// 投影效果.
			modal : true,// 对后面内容进行遮盖.
			closable : true,
			bodyStyle : 'padding:5 5 5 5',
			animCollapse : true,// 关闭面板是的动画效果.
			items : [menuForm]
		});

menuFormWin.on('beforehide',function(){
	//radioFalse.disabled = false;
});
		
Ext.onReady(function() {
	selectedNode = null;
	mytree = new Ext.ux.tree.TreeGrid({
				// checkModel : 'childCascade',此属性无效.
				width : Ext.get("content").getWidth(),
				height : Ext.get("content").getHeight(),
				// renderTo: Ext.get('menu-tree-grid'),
				enableDD : true,
				columns : [{
							header : '名称',
							dataIndex : 'name',
							width : 300
						}, {
							header : '代码',
							width : 100,
							dataIndex : 'code'
						}, {
							header : '链接',
							width : 500,
							dataIndex : 'link'
						}, {
							header : '状态',
							width : 100,
							dataIndex : 'status'
						}, {
							header : '能否删除',
							width : 60,
							dataIndex : 'canBeDeleteZw'
						}],
				tbar : propertiesToolbar,
				listeners : {
					click : clickTreeNode
				}
				// ,store : menuDataStore
				// ,dataUrl: '/javascript/menu/json.data'
				,
				dataUrl : '/menu.action?method=jsonData'
			});

	mytree.render(Ext.get('menu-tree-grid'));
		// menuDataStore.load();
	});

	
	
Ext.override(Ext.form.RadioGroup, {   
    getName: function(){   
        return this.items.first().name;   
    },   
    getValue: function(){   
        var v;   
        if (this.rendered) {   
            this.items.each(function(item){   
                if (!item.getValue())    
                    return true;   
                v = item.getRawValue();   
                return false;   
            });   
        }   
        else {   
            for (var k in this.items) {   
                if (this.items[k].checked) {   
                    v = this.items[k].inputValue;   
                    break;   
                }   
            }   
        }   
        return v;   
    },   
    setValue: function(v){   
        if (this.rendered)    
            this.items.each(function(item){   
                item.setValue(item.getRawValue() == v);   
            });   
        else {   
            for (var k in this.items) {   
                this.items[k].checked = this.items[k].inputValue == v;   
            }   
        }   
    }   
});  

